package com.sinba.common.user.service;

import java.util.Date;
import java.util.List;
import java.util.Map;

import com.sinba.common.dto.PageDTO;
import com.sinba.common.system.dto.ExtractDTO;
import com.sinba.common.system.dto.GenealogicalTreeDTO;
import com.sinba.common.user.dto.AccountDTO;
import com.sinba.common.user.dto.RegUserBasicDTO;
import com.sinba.common.user.dto.RegisterUserDTO;
import com.sinba.common.user.dto.RegisterUserGridDTO;
import com.sinba.common.user.dto.RegisterUserQueryDTO;
import com.sinba.common.user.dto.XPTreeViewDTO;
import com.sinba.common.user.entity.RegisterUser;

public interface IRegisterUserService {
	String regiserUser(RegisterUserDTO dto);//160227 注册用户
	String updateRegisterInfo(RegisterUserDTO dto);
	//��ҳ��ѯ
	PageDTO findRegisterUserPager(RegisterUserQueryDTO qdto,String sord, String sidx);
	//�û���¼
	RegisterUserDTO userLogin(RegisterUserDTO dto,String level);
	//���
	String saveRegisterUser(RegisterUserDTO dto);
	//�༭
	void editRegisterUser(RegisterUserDTO dto);
	//�༭(����Ա�޸�)
	void updateRegisterUser(RegisterUserDTO dto);
	//ɾ��
	String deleteRegisterUser(Long[] ids);
	String deleteRegisterUser(String loginName);
	//����û�ID���¼������û�
	RegisterUserDTO findRegisterUserByIdOrLoginName(RegisterUserQueryDTO qdto);
	//�жϵ�¼���Ƿ��Ѵ���
	boolean loginNameExist(RegisterUserQueryDTO qdto);
	//修改密码
	void updatePassword(RegisterUserDTO dto,String level);
	boolean userValidate(String loginName,String password,String pwdLevel);
	/**
	 * 验证旧密码是否正确
	 * @param loginName
	 * @param password
	 * @param pwdLevel
	 * @return
	 */
	boolean checkOrdPassword(String loginName,String password,String pwdLevel);
	/**
	 * 校验用户的密保问题是否正确；
	 * @param regDTO
	 * @return
	 */
	boolean checkPwdProblem(RegisterUserDTO regDTO);
	/**
	 * 获取用户基本信息
	 * @param loginName
	 * @return
	 */
	RegUserBasicDTO findRegUserBasicInfo(String loginName);
	/**
	 * 修改个人资料
	 * @param dto
	 */
	String changeRegUserBasicInfo(RegUserBasicDTO dto);
	
	AccountDTO findAccountByLoginName(String loginName);
	
	String checkGetBackInfo(RegUserBasicDTO rubDTO,RegisterUserDTO registerUserDTO,String level);
	boolean password3Valid(String loginName,String password);
	String changePassword(RegisterUserDTO dto);
	/**
	 * 分页查询直推用户
	 * @param qdto
	 * @param sord
	 * @param sidx
	 * @return
	 */
	PageDTO findDirectPushUserPager(RegisterUserQueryDTO qdto, String sord, String sidx);
	
	boolean password2Valid(String loginName,String password);
	String login(String loginName,String password);
	
	
	boolean login2(String loginName,String password);
	String saveRegisterUserAuth(RegisterUserDTO dto);
	List<RegisterUser> lastActiveUser(Date startTime);
	String findUserNameByLoginName(String loginName);
	
	void applyDeclarationCenter(String loginName);
	void openOrCloseDeclarationCenter(String loginName);
	
	//极差(完成直推9单)
	void jiChaAward(String loginName);
	
	
	//用户激活
	String userActivate(String loginName,String activeType);
	
	//会员充值与扣除
	String userRecharge(String dtype , Double moeny ,String loginName);
	
	
	
	//充值账户转动态或静态
	String rechargeToDs(String dtype , Double moeny ,String loginName);
	
	
	/**
	 * 分页查询我的团队
	 * @param qdto
	 * @param sord
	 * @param sidx
	 * @return
	 */
	PageDTO myTeamPager(RegisterUserQueryDTO qdto, String sord, String sidx);
	
	//今天推荐人数(TodayRec)
	//今天推荐并激活人数(TodayRecActivation)
	//推荐全部人数(AllRec)
	//推荐已激活人数(AllRecActivation)
	//我的团队总数(Team)
	//我的团队激活人数(TeamActivation)
	Integer userCount(String loginName,String type,String[] notInUser);
	
	//查找某个团队是否有指定业绩的数量
	boolean teamNumber(String linkCode,Double top,int quy,String notInLoginName);
	
	
	/**
	 * 统计团队业绩
	 * 100W,200W,600W,1000W,2000W,4000W,
	 */
    Map<String, List<String>> teamYeJiStat(RegisterUserQueryDTO queryDTO);
    
    /**
	 * 系统初始化
	 */
	void initSystemData();
	
	/**
	 * 团队树
	 * @param loginName
	 * @return
	 */
	XPTreeViewDTO findXPTree(String loginName,String lang);
	/**
	 * 找回密码
	 * @param userName
	 * @return
	 */
	String findUserPassword(String userName);
	Boolean updateUserPassword(RegisterUserDTO dto);
	
	//系谱图
	GenealogicalTreeDTO findGenealogy(String loginName);
	
	//修改推广报单中心
	void updateTuGuangDc(String loginName , String tuGuangDc);
	
	
	//运营中心升级
	String userUpgrade(RegisterUserDTO regUserDTO);
	
	String findContactNo(String recommendUser);
	List<RegisterUserGridDTO> findContactNo(String loginName , String registerLocation);
	
	boolean userOut(String loginName);
	PageDTO findSubUserPager(RegisterUserQueryDTO qdto,String sord, String sidx);
	
	String changePasswordByAdmin(RegisterUserDTO dto);
	
	boolean changeUserStatus(Long[] ids,String userStatus);
	String userOpt(String optType,
			String loginName, 
			String activeType,
			String transAccount,
			Double value,
			String dtype,
			ExtractDTO dto,Double moeny,String upLevel);
	
	/**
	 * 清空所有账号现金银行
	 */
	void userAccount1Clean();
	
	String findUserInfo(String loginName);
	
	String findPasswordByMobile(RegisterUserDTO registerUserDTO);
	
	String changeMobile(RegUserBasicDTO rbDto);
	void batchAddUser(int rows);
	
	String userSignIn(String loginName);
	
	void deleteTimeOutUser();
	
	Long tiXingTop(String loginName);
	
}
